#include <vector>
#include <iostream>

using namespace std;

// 用这个例子讲解递归如何执行
class GetMaxValue
{
private:
    // arr[l....r] 范围上的最大值
    int f(vector<int>& arr, int l, int r)
    {
        // basecase
        if(l == r) return arr[l];

        int m = l + (r - l) / 2;
        int lmax = f(arr, l, m);
        int rmax = f(arr, m + 1, r);
        return max(lmax, rmax);
    }

public:
    int maxValue(vector<int>& arr)
    {
        return f(arr, 0, arr.size() - 1);
    }
};

int main()
{
    GetMaxValue t;
    vector<int> arr = {3, 8, 7, 6, 4, 5, 1, 2};
    cout << "数组的最大值 : " << t.maxValue(arr) << endl;
    return 0;
}